Today, a large number of scalable software applications are developed to run over multi-tier target systems. However, one of the key challenges is predicting the performance of the software application when it is to be deployed on a new platform. Performance prediction and bottleneck detection for the software applications is a necessity because deploying the software applications on a target system is both costly and time consuming. Also, for capacity planning purposes, it is advantageous to understand performance of the software applications without actually running the software applications on the target system. Performance prediction of the software applications under a given workload on the target system is a complex and a tedious task.
In order to predict performance of such software applications, Researchers, Practitioners and Developers in the industry follow intuitive and non-systematic approaches. However, intuitive and non-systematic approaches are error-prone and lead to inaccurate predictions resulting in huge losses due to faulty capacity planning. The process of performance prediction becomes much more challenging if the software applications are to be deployed over a target system which has multi-tier architecture.
Conventionally, performance prediction is performed using a simulator, building analytical model or using architectural simulator of the target system. The process of simulation involves careful analysis of each of the components of the target system, representing each of the components accurately in a queuing model, and implementing the business function flow through the target system. The entire process of simulation is quite complex. Further, analytical models have a drawback that these models require knowledge of the exact deployment scenario and associated models need to be built for the specific software applications. If the software application behaviour or the infrastructure of the target system changes, the models are required to be rebuilt. Furthermore, architectural simulator is useful for knowing the software application performance if the target system is limited to a single server only. The architectural simulator does not allow performance prediction over a multi-tier target system. Executing the software applications for different workloads involves executing the software applications multiple times on the architectural simulator, wherein such execution requires significant simulation time. Thus, there is a need for a performance prediction system which can effectively monitor the performance of the software applications deployed over multi-tier target systems.